[INFO] cloning repository https://github.com/psycoder-sup/blueprint-work
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/psycoder-sup/blueprint-work" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpsycoder-sup%2Fblueprint-work", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpsycoder-sup%2Fblueprint-work'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 03d6085030004d21a6f6e56098b3909b8ae6374a
[INFO] testing psycoder-sup/blueprint-work against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpsycoder-sup%2Fblueprint-work" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/psycoder-sup/blueprint-work
[INFO] finished tweaking git repo https://github.com/psycoder-sup/blueprint-work
[INFO] tweaked toml for git repo https://github.com/psycoder-sup/blueprint-work written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/psycoder-sup/blueprint-work on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/psycoder-sup/blueprint-work already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 933c65d10233d8465f57af03bc2d834f22c3292264dd808747df39a46fd33c34
[INFO] running `Command { std: "docker" "start" "-a" "933c65d10233d8465f57af03bc2d834f22c3292264dd808747df39a46fd33c34", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "933c65d10233d8465f57af03bc2d834f22c3292264dd808747df39a46fd33c34", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "933c65d10233d8465f57af03bc2d834f22c3292264dd808747df39a46fd33c34", kill_on_drop: false }`
[INFO] [stdout] 933c65d10233d8465f57af03bc2d834f22c3292264dd808747df39a46fd33c34
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a39f01e5fd0b453431c8be9bc8b01abe16954d93c7da8c6942f96ed4c7cbcca9
[INFO] running `Command { std: "docker" "start" "-a" "a39f01e5fd0b453431c8be9bc8b01abe16954d93c7da8c6942f96ed4c7cbcca9", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling zmij v1.0.19
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling clap_builder v4.5.57
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling ulid v1.2.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling ratatui v0.28.1
[INFO] [stderr]    Compiling clap v4.5.57
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling blueprint v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `get_all_dependencies` is never used
[INFO] [stdout]    --> src/db/dependency.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn get_all_dependencies(db: &Database) -> Result<Vec<Dependency>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cycle_nodes` is never read
[INFO] [stdout]   --> src/tui/graph.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DagLayout {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub cycle_nodes: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DagLayout` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `layer_count`, `node_count`, `edge_count`, and `has_cycles` are never used
[INFO] [stdout]    --> src/tui/graph.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl DagLayout {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn layer_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn node_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn edge_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn has_cycles(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.34s
[INFO] running `Command { std: "docker" "inspect" "a39f01e5fd0b453431c8be9bc8b01abe16954d93c7da8c6942f96ed4c7cbcca9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a39f01e5fd0b453431c8be9bc8b01abe16954d93c7da8c6942f96ed4c7cbcca9", kill_on_drop: false }`
[INFO] [stdout] a39f01e5fd0b453431c8be9bc8b01abe16954d93c7da8c6942f96ed4c7cbcca9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5d783a7482a4b7434cdd2bf2bc3bf7d8d4e0ebf3050579da924f66bfa3bd1991
[INFO] running `Command { std: "docker" "start" "-a" "5d783a7482a4b7434cdd2bf2bc3bf7d8d4e0ebf3050579da924f66bfa3bd1991", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling blueprint v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 9.18s
[INFO] running `Command { std: "docker" "inspect" "5d783a7482a4b7434cdd2bf2bc3bf7d8d4e0ebf3050579da924f66bfa3bd1991", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d783a7482a4b7434cdd2bf2bc3bf7d8d4e0ebf3050579da924f66bfa3bd1991", kill_on_drop: false }`
[INFO] [stdout] 5d783a7482a4b7434cdd2bf2bc3bf7d8d4e0ebf3050579da924f66bfa3bd1991
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e90e6687090f296ac19a4d6b875fc5ab233d132ae566d0a9140d8d08f535953b
[INFO] running `Command { std: "docker" "start" "-a" "e90e6687090f296ac19a4d6b875fc5ab233d132ae566d0a9140d8d08f535953b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/blueprint-1f8cf364bd5b11df)
[INFO] [stdout] 
[INFO] [stdout] running 382 tests
[INFO] [stdout] test db::dependency::tests::test_add_between_epics ... ok
[INFO] [stdout] test db::dependency::tests::test_add_rejects_duplicate ... ok
[INFO] [stdout] test db::dependency::tests::test_add_rejects_nonexistent_blocker ... ok
[INFO] [stdout] test db::dependency::tests::test_add_rejects_self_reference ... ok
[INFO] [stdout] test db::dependency::tests::test_add_rejects_nonexistent_blocked ... ok
[INFO] [stdout] test db::dependency::tests::test_add_cross_type ... ok
[INFO] [stdout] test db::dependency::tests::test_is_blocked_no_dependencies ... ok
[INFO] [stdout] test db::dependency::tests::test_add_between_tasks ... ok
[INFO] [stdout] test db::dependency::tests::test_full_lifecycle ... ok
[INFO] [stdout] test db::dependency::tests::test_is_blocked_blocker_not_done ... ok
[INFO] [stdout] test db::dependency::tests::test_get_blockers ... ok
[INFO] [stdout] test db::dependency::tests::test_get_all_dependencies ... ok
[INFO] [stdout] test db::dependency::tests::test_remove_existing ... ok
[INFO] [stdout] test db::dependency::tests::test_is_blocked_blocker_done ... ok
[INFO] [stdout] test db::dependency::tests::test_get_blocked_by ... ok
[INFO] [stdout] test db::dependency::tests::test_is_blocked_mixed_statuses ... ok
[INFO] [stdout] test db::dependency::tests::test_remove_nonexistent ... ok
[INFO] [stdout] test db::epic::tests::test_create_with_invalid_project_fails ... ok
[INFO] [stdout] test db::epic::tests::test_create_assigns_sequential_short_ids ... ok
[INFO] [stdout] test db::epic::tests::test_create_with_valid_project ... ok
[INFO] [stdout] test db::epic::tests::test_delete_nonexistent_returns_false ... ok
[INFO] [stdout] test db::epic::tests::test_delete_cascades_to_tasks ... ok
[INFO] [stdout] test db::epic::tests::test_get_by_id ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_case_insensitive ... ok
[INFO] [stdout] test db::epic::tests::test_full_lifecycle ... ok
[INFO] [stdout] test db::epic::tests::test_get_includes_task_count ... ok
[INFO] [stdout] test db::epic::tests::test_list_by_project ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_not_found ... ok
[INFO] [stdout] test db::epic::tests::test_list_by_status ... ok
[INFO] [stdout] test db::epic::tests::test_list_no_filter ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_short_with_project ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_short_without_project_ambiguous ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_task_short_id_error ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_short_without_project_unique ... ok
[INFO] [stdout] test db::epic::tests::test_resolve_epic_id_ulid_passthrough ... ok
[INFO] [stdout] test db::epic::tests::test_update_nonexistent_errors ... ok
[INFO] [stdout] test db::epic::tests::test_sync_epic_any_in_progress ... ok
[INFO] [stdout] test db::epic::tests::test_sync_epic_all_done ... ok
[INFO] [stdout] test db::epic::tests::test_sync_epic_all_todo ... ok
[INFO] [stdout] test db::epic::tests::test_short_ids_scoped_to_project ... ok
[INFO] [stdout] test db::epic::tests::test_sync_epic_no_tasks ... ok
[INFO] [stdout] test db::prd::tests::test_create_prd_invalid_project_fk ... ok
[INFO] [stdout] test db::resolve::tests::test_classify_edge_cases ... ok
[INFO] [stdout] test db::resolve::tests::test_classify_epic_short_id ... ok
[INFO] [stdout] test db::resolve::tests::test_classify_task_short_id ... ok
[INFO] [stdout] test db::resolve::tests::test_classify_ulid ... ok
[INFO] [stdout] test db::epic::tests::test_sync_epic_mixed_done_todo ... ok
[INFO] [stdout] test db::prd::tests::test_get_prd_by_id ... ok
[INFO] [stdout] test db::prd::tests::test_prd_cascade_deletes_with_project ... ok
[INFO] [stdout] test db::project::tests::test_create_returns_valid_ulid ... ok
[INFO] [stdout] test db::prd::tests::test_create_prd_valid ... ok
[INFO] [stdout] test db::epic::tests::test_update_partial_fields ... ok
[INFO] [stdout] test db::project::tests::test_delete_nonexistent_returns_false ... ok
[INFO] [stdout] test db::project::tests::test_delete_cascades ... ok
[INFO] [stdout] test db::project::tests::test_delete_returns_true ... ok
[INFO] [stdout] test db::project::tests::test_update_nonexistent_errors ... ok
[INFO] [stdout] test db::project::tests::test_get_by_id ... ok
[INFO] [stdout] test db::project::tests::test_full_lifecycle ... ok
[INFO] [stdout] test db::project::tests::test_list_with_status_filter ... ok
[INFO] [stdout] test db::project::tests::test_update_partial_fields ... ok
[INFO] [stdout] test db::project::tests::test_list_without_filter ... ok
[INFO] [stdout] test db::status::tests::test_empty_db_all_zeros ... ok
[INFO] [stdout] test db::status::tests::test_get_dependency_display_rows_empty ... ok
[INFO] [stdout] test db::status::tests::test_get_dependency_display_rows_with_active_block ... ok
[INFO] [stdout] test db::status::tests::test_get_max_updated_at_empty ... ok
[INFO] [stdout] test db::status::tests::test_epic_count_breakdown ... ok
[INFO] [stdout] test db::status::tests::test_get_max_updated_at_with_data ... ok
[INFO] [stdout] test db::status::tests::test_blocked_items_excludes_done_blockers ... ok
[INFO] [stdout] test db::status::tests::test_blocked_items_returns_correct_items ... ok
[INFO] [stdout] test db::status::tests::test_epic_counts_with_project_filter ... ok
[INFO] [stdout] test db::status::tests::test_get_dependency_display_rows_resolved_block ... ok
[INFO] [stdout] test db::task::tests::test_create_with_invalid_epic_fails ... ok
[INFO] [stdout] test db::task::tests::test_delete_nonexistent_returns_false ... ok
[INFO] [stdout] test db::task::tests::test_create_assigns_sequential_short_ids ... ok
[INFO] [stdout] test db::task::tests::test_create_with_valid_epic ... ok
[INFO] [stdout] test db::status::tests::test_task_counts_with_data ... ok
[INFO] [stdout] test db::task::tests::test_delete_cleans_up_dependencies ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_epic_not_found ... ok
[INFO] [stdout] test db::task::tests::test_create_task_syncs_epic_status ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_epic_short_id_error ... ok
[INFO] [stdout] test db::task::tests::test_delete_task_syncs_epic_status ... ok
[INFO] [stdout] test db::task::tests::test_get_by_id ... ok
[INFO] [stdout] test db::task::tests::test_list_by_status ... ok
[INFO] [stdout] test db::task::tests::test_full_lifecycle ... ok
[INFO] [stdout] test db::task::tests::test_list_no_filter ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_case_insensitive ... ok
[INFO] [stdout] test db::task::tests::test_list_by_epic ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_task_not_found ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_short_two_step ... ok
[INFO] [stdout] test db::tests::test_open_creates_file ... ok
[INFO] [stdout] test db::task::tests::test_update_nonexistent_errors ... ok
[INFO] [stdout] test db::tests::test_failed_migration_does_not_record_version ... ok
[INFO] [stdout] test db::task::tests::test_resolve_task_id_ulid_passthrough ... ok
[INFO] [stdout] test db::tests::test_foreign_keys_enforced ... ok
[INFO] [stdout] test db::tests::test_cascade_delete ... ok
[INFO] [stdout] test db::tests::test_migrate_creates_indexes ... ok
[INFO] [stdout] test db::task::tests::test_update_partial_fields ... ok
[INFO] [stdout] test db::task::tests::test_short_ids_scoped_to_epic ... ok
[INFO] [stdout] test db::tests::test_migrate_idempotent ... ok
[INFO] [stdout] test db::tests::test_migrate_creates_tables ... ok
[INFO] [stdout] test db::tests::test_migrate_tracks_schema_version ... ok
[INFO] [stdout] test db::task::tests::test_update_task_syncs_epic_status ... ok
[INFO] [stdout] test db::tests::test_wal_mode_enabled ... ok
[INFO] [stdout] test mcp::tests::test_initialize_returns_server_info ... ok
[INFO] [stdout] test mcp::tests::test_initialized_notification ... ok
[INFO] [stdout] test mcp::tests::test_malformed_json_returns_parse_error ... ok
[INFO] [stdout] test mcp::tests::test_invalid_jsonrpc_version ... ok
[INFO] [stdout] test mcp::tests::test_ping_returns_empty_object ... ok
[INFO] [stdout] test mcp::tests::test_notification_returns_none ... ok
[INFO] [stdout] test mcp::tests::test_request_with_invalid_id_type_returns_invalid_request ... ok
[INFO] [stdout] test mcp::tests::test_tools_call_missing_params ... ok
[INFO] [stdout] test mcp::tests::test_request_with_null_id_returns_invalid_request ... ok
[INFO] [stdout] test db::tests::test_migrate_backfills_short_ids ... ok
[INFO] [stdout] test mcp::tests::test_tools_list_returns_19_tools ... ok
[INFO] [stdout] test mcp::tests::test_tools_call_unknown_tool ... ok
[INFO] [stdout] test mcp::tests::test_valid_request_returns_method_not_found ... ok
[INFO] [stdout] test mcp::tests::test_tools_call_known_tool ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_between_epics ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_invalid_blocker_type ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_missing_param ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_cross_type ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_between_tasks ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_duplicate_rejected ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_nonexistent_blocker ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_self_reference_rejected ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_mixed_short_and_ulid ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_with_short_ids ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_remove_dependency_nonexistent ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_add_dependency_with_task_short_ids ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_create_epic_invalid_project_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_create_epic_missing_project_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_create_epic_missing_title ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_delete_epic_not_found ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_create_epic_success ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_remove_dependency_with_short_ids ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_dependency_full_lifecycle ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_delete_epic_by_short_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_delete_epic_success ... ok
[INFO] [stdout] test mcp::tools::dependency::tests::test_remove_dependency_success ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_delete_epic_cascades_to_tasks ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_get_epic_by_short_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_get_epic_by_short_id_case_insensitive ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_get_epic_not_found ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_list_epics_empty ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_list_epics_invalid_status ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_get_epic_missing_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_get_epic_success_with_nested_data ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_update_epic_not_found ... ok
[INFO] [stdout] test mcp::tools::prd::tests::test_feed_prd_invalid_project ... ok
[INFO] [stdout] test mcp::tools::prd::tests::test_feed_prd_missing_params ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_list_epics_project_id_filter ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_list_epics_status_filter ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_epic_full_crud_lifecycle ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_list_epics_with_data ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_update_epic_by_short_id ... ok
[INFO] [stdout] test mcp::tools::epic::tests::test_update_epic_success ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_create_project_missing_description ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_create_project_missing_name ... ok
[INFO] [stdout] test mcp::tools::prd::tests::test_feed_prd_success ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_delete_project_not_found ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_create_project_success ... ok
[INFO] [stdout] test mcp::tools::prd::tests::test_feed_prd_verifies_db_storage ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_delete_project_cascades ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_get_project_missing_id ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_get_project_not_found ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_delete_project_success ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_list_projects_empty ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_list_projects_invalid_status ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_get_project_with_epics ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_get_project_success ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_list_projects_with_status_filter ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_update_project_not_found ... ok
[INFO] [stdout] test mcp::tools::status::tests::test_status_empty_project ... ok
[INFO] [stdout] test mcp::tools::status::tests::test_status_project_not_found ... ok
[INFO] [stdout] test mcp::tools::status::tests::test_status_without_project_id ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_list_projects_with_data ... ok
[INFO] [stdout] test mcp::tools::project::tests::test_update_project_success ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_create_task_missing_epic_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_create_task_invalid_epic_id ... ok
[INFO] [stdout] test mcp::tools::status::tests::test_status_with_project_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_create_task_missing_title ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_delete_task_by_short_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_create_task_success ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_create_task_with_epic_short_id ... ok
[INFO] [stdout] test mcp::tools::status::tests::test_status_full_lifecycle ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_delete_task_not_found ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_get_task_missing_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_get_task_not_found ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_get_task_by_short_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_empty ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_delete_task_success ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_get_task_success_with_dependency_info ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_delete_task_cascades_dependencies ... ok
[INFO] [stdout] test mcp::tools::tests::test_tool_definitions_count ... ok
[INFO] [stdout] test mcp::tools::tests::test_tool_definitions_have_required_fields ... ok
[INFO] [stdout] test mcp::types::tests::test_deserialize_notification ... ok
[INFO] [stdout] test mcp::types::tests::test_deserialize_request_with_number_id ... ok
[INFO] [stdout] test mcp::types::tests::test_deserialize_request_with_params ... ok
[INFO] [stdout] test mcp::tools::tests::test_tool_definitions_unique_names ... ok
[INFO] [stdout] test mcp::types::tests::test_deserialize_request_with_string_id ... ok
[INFO] [stdout] test mcp::types::tests::test_method_not_found_includes_method_name ... ok
[INFO] [stdout] test mcp::types::tests::test_parse_error_has_null_id ... ok
[INFO] [stdout] test mcp::types::tests::test_serialize_error_response ... ok
[INFO] [stdout] test mcp::types::tests::test_serialize_success_response ... ok
[INFO] [stdout] test mcp::types::tests::test_response_is_single_line ... ok
[INFO] [stdout] test settings::tests::test_blueprint_dir_exists_in ... ok
[INFO] [stdout] test settings::tests::test_exists_in ... ok
[INFO] [stdout] test settings::tests::test_load_malformed_file_returns_default ... ok
[INFO] [stdout] test settings::tests::test_load_missing_file_returns_default ... ok
[INFO] [stdout] test settings::tests::test_load_valid_file ... ok
[INFO] [stdout] test settings::tests::test_save_to_creates_file ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_invalid_status ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_default_project_scoping ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_epic_id_filter ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_includes_blockers ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_update_task_not_found ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_with_epic_short_id ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_with_data ... ok
[INFO] [stdout] test mcp::tools::tests::test_dispatch_unknown_tool_returns_none ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_no_default_no_filter_returns_all ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_project_filter_explicit ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_list_tasks_status_filter ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_task_full_crud_lifecycle ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_update_task_by_short_id ... ok
[INFO] [stdout] test tui::app::tests::arrow_keys_navigate_nodes_not_scroll ... ok
[INFO] [stdout] test mcp::tools::task::tests::test_update_task_success ... ok
[INFO] [stdout] test tui::app::tests::arrow_down_up_navigates_between_layers ... ok
[INFO] [stdout] test tui::app::tests::build_task_graph_no_epic_selected_clears_cache ... ok
[INFO] [stdout] test tui::app::tests::blocked_epic_ids_populated_after_refresh ... ok
[INFO] [stdout] test tui::app::tests::blocked_task_ids_populated_correctly ... ok
[INFO] [stdout] test tui::app::tests::build_epic_graph_produces_correct_layout ... ok
[INFO] [stdout] test tui::app::tests::d_switches_to_graph_view ... ok
[INFO] [stdout] test tui::app::tests::dual_caches_invalidated_on_refresh_outside_graph_view ... ok
[INFO] [stdout] test tui::app::tests::enter_is_noop_when_no_tasks ... ok
[INFO] [stdout] test tui::app::tests::dual_caches_rebuilt_on_refresh_in_graph_view ... ok
[INFO] [stdout] test tui::app::tests::build_task_graph_orphan_tasks_positioned ... ok
[INFO] [stdout] test tui::app::tests::enter_confirms_selection ... ok
[INFO] [stdout] test tui::app::tests::enter_opens_task_detail_popup ... ok
[INFO] [stdout] test tui::app::tests::build_task_graph_produces_correct_layout ... ok
[INFO] [stdout] test tui::app::tests::dual_scroll_routes_to_active_pane ... ok
[INFO] [stdout] test tui::app::tests::dual_pane_tracks_focus_independently ... ok
[INFO] [stdout] test tui::app::tests::esc_closes_help_overlay ... ok
[INFO] [stdout] test tui::app::tests::esc_closes_selector_without_changing_selection ... ok
[INFO] [stdout] test tui::app::tests::dual_pane_epic_focus_updates_task_graph ... ok
[INFO] [stdout] test tui::app::tests::esc_closes_task_detail_popup ... ok
[INFO] [stdout] test tui::app::tests::esc_in_dual_returns_to_single_not_normal ... ok
[INFO] [stdout] test tui::app::tests::esc_in_graph_view_returns_to_normal ... ok
[INFO] [stdout] test tui::app::tests::first_arrow_key_selects_first_node ... ok
[INFO] [stdout] test tui::app::tests::focus_cleared_on_entering_graph_view ... ok
[INFO] [stdout] test tui::app::tests::graph_cache_invalidated_on_data_refresh_outside_graph_view ... ok
[INFO] [stdout] test tui::app::tests::h_l_switches_left_right_panels ... ok
[INFO] [stdout] test tui::app::tests::hjkl_still_scrolls_in_graph_view ... ok
[INFO] [stdout] test tui::app::tests::focus_cleared_on_mode_switch_1_and_2 ... ok
[INFO] [stdout] test tui::app::tests::graph_key_1_stays_epic_2_switches_to_task ... ok
[INFO] [stdout] test tui::app::tests::initial_mode_is_normal ... ok
[INFO] [stdout] test tui::app::tests::graph_cache_rebuilt_on_data_refresh_in_graph_view ... ok
[INFO] [stdout] test tui::app::tests::j_k_noop_when_no_epics ... ok
[INFO] [stdout] test tui::app::tests::j_k_navigates_epics_with_wrapping ... ok
[INFO] [stdout] test tui::app::tests::j_k_still_navigates_epics_when_epic_panel_focused ... ok
[INFO] [stdout] test tui::app::tests::j_k_navigates_tasks_when_task_panel_focused ... ok
[INFO] [stdout] test tui::app::tests::j_k_task_noop_when_no_tasks ... ok
[INFO] [stdout] test tui::app::tests::j_k_wrap_around ... ok
[INFO] [stdout] test tui::app::tests::key_1_in_dual_exits_to_single_epic ... ok
[INFO] [stdout] test tui::app::tests::key_3_toggles_dual_pane_on_off ... ok
[INFO] [stdout] test tui::app::tests::key_2_in_dual_exits_to_single_task ... ok
[INFO] [stdout] test tui::app::tests::q_in_selector_closes_popup_without_quitting ... ok
[INFO] [stdout] test tui::app::tests::p_opens_selector_when_projects_exist ... ok
[INFO] [stdout] test tui::app::tests::p_is_noop_when_no_projects ... ok
[INFO] [stdout] test tui::app::tests::left_right_wraps_within_layer ... ok
[INFO] [stdout] test tui::app::tests::q_in_normal_quits ... ok
[INFO] [stdout] test tui::app::tests::question_mark_opens_help_overlay ... ok
[INFO] [stdout] test tui::app::tests::navigating_epics_refreshes_tasks ... ok
[INFO] [stdout] test tui::app::tests::pressing_2_in_graph_view_sets_task_mode ... ok
[INFO] [stdout] test tui::app::tests::s_is_noop_when_no_tasks ... ok
[INFO] [stdout] test tui::app::tests::s_persists_to_db ... ok
[INFO] [stdout] test tui::app::tests::scroll_h_does_not_go_below_zero ... ok
[INFO] [stdout] test tui::app::tests::scroll_h_l_adjusts_scroll_x ... ok
[INFO] [stdout] test tui::graph::tests::all_orphans ... ok
[INFO] [stdout] test tui::graph::tests::backward_pass_improves_upper_layers ... ok
[INFO] [stdout] test tui::graph::tests::barycenter_diamond_no_crossings ... ok
[INFO] [stdout] test tui::graph::tests::barycenter_fan_out_no_crossings ... ok
[INFO] [stdout] test tui::graph::tests::barycenter_reduces_crossings ... ok
[INFO] [stdout] test tui::app::tests::scroll_j_clamped_to_max_scroll ... ok
[INFO] [stdout] test tui::app::tests::scroll_initial_state_is_zero ... ok
[INFO] [stdout] test tui::app::tests::s_cycles_task_status ... ok
[INFO] [stdout] test tui::graph::tests::cycle_detection_full ... ok
[INFO] [stdout] test tui::graph::tests::crossing_count_comparison ... ok
[INFO] [stdout] test tui::graph::tests::cycle_detection_partial ... ok
[INFO] [stdout] test tui::graph::tests::deterministic_ordering_within_layers ... ok
[INFO] [stdout] test tui::graph::tests::diamond ... ok
[INFO] [stdout] test tui::graph::tests::edges_with_unknown_nodes_filtered ... ok
[INFO] [stdout] test tui::graph::tests::empty_graph ... ok
[INFO] [stdout] test tui::graph::tests::fan_out ... ok
[INFO] [stdout] test tui::graph::tests::linear_chain ... ok
[INFO] [stdout] test tui::graph::tests::longest_path_wins ... ok
[INFO] [stdout] test tui::graph::tests::multi_layer_crossing_reduction ... ok
[INFO] [stdout] test tui::graph::tests::no_connection_nodes_retain_position ... ok
[INFO] [stdout] test tui::graph::tests::orphans_mixed_with_connected ... ok
[INFO] [stdout] test tui::graph::tests::single_node ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_border_style_bright_on_first_half ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_border_style_cycles_correctly ... ok
[INFO] [stdout] test tui::graph::tests::x_positions_assigned_after_minimization ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_border_style_dim_on_second_half ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_border_style_ignores_status ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_node_border_color_pulses ... ok
[INFO] [stdout] test tui::graph_render::tests::blocked_node_uses_double_line_borders ... ok
[INFO] [stdout] test tui::graph_render::tests::border_chars_done_unchanged_by_animation_frame ... ok
[INFO] [stdout] test tui::graph_render::tests::border_chars_todo_unchanged_by_animation_frame ... ok
[INFO] [stdout] test tui::graph_render::tests::border_style_returns_correct_colors ... ok
[INFO] [stdout] test tui::graph_render::tests::canvas_defaults_to_spaces ... ok
[INFO] [stdout] test tui::graph_render::tests::canvas_out_of_bounds_write_does_not_panic ... ok
[INFO] [stdout] test tui::app::tests::scroll_k_does_not_go_below_zero ... ok
[INFO] [stdout] test tui::graph_render::tests::canvas_put_char_and_get ... ok
[INFO] [stdout] test tui::graph_render::tests::canvas_put_str ... ok
[INFO] [stdout] test tui::graph_render::tests::edge_color_cyan_for_normal_pink_for_blocked ... ok
[INFO] [stdout] test tui::graph_render::tests::edges_do_not_overwrite_node_content ... ok
[INFO] [stdout] test tui::graph_render::tests::empty_edge_list_produces_no_changes ... ok
[INFO] [stdout] test tui::graph_render::tests::focus_highlight_epic_height ... ok
[INFO] [stdout] test tui::graph_render::tests::focus_highlight_outer_glow_preserves_inner_border ... ok
[INFO] [stdout] test tui::graph_render::tests::l_shaped_edge_routing_left ... ok
[INFO] [stdout] test tui::graph_render::tests::l_shaped_edge_routing_right ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_border_epic_has_correct_height ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_border_shifts_between_frames ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_cell_bright_when_phase_below_3 ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_cell_dim_when_phase_ge_3 ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_cell_phase_shifts_with_frame ... ok
[INFO] [stdout] test tui::graph_render::tests::node_rendered_at_offset_position ... ok
[INFO] [stdout] test tui::graph_render::tests::render_epic_node_full_progress ... ok
[INFO] [stdout] test tui::app::tests::scroll_j_k_adjusts_scroll_y ... ok
[INFO] [stdout] test tui::graph_render::tests::render_epic_node_has_progress_bar ... ok
[INFO] [stdout] test tui::graph_render::tests::render_in_progress_node_uses_rounded_borders ... ok
[INFO] [stdout] test tui::graph_render::tests::render_in_progress_task_has_marching_border ... ok
[INFO] [stdout] test tui::graph_render::tests::render_node_wraps_long_title_to_two_lines ... ok
[INFO] [stdout] test tui::graph_render::tests::render_todo_node_borders ... ok
[INFO] [stdout] test tui::graph_render::tests::render_todo_node_contains_symbol ... ok
[INFO] [stdout] test tui::graph_render::tests::render_todo_node_has_dim_border_color ... ok
[INFO] [stdout] test tui::graph_render::tests::straight_vertical_edge_between_adjacent_layers ... ok
[INFO] [stdout] test tui::graph_render::tests::truncate_long_string_adds_ellipsis ... ok
[INFO] [stdout] test tui::graph_render::tests::truncate_exact_fit ... ok
[INFO] [stdout] test tui::graph_render::tests::truncate_zero_budget ... ok
[INFO] [stdout] test tui::graph_render::tests::truncate_short_string_unchanged ... ok
[INFO] [stdout] test tui::graph_render::tests::two_nodes_at_different_positions ... ok
[INFO] [stdout] test tui::graph_render::tests::marching_cell_vertical_chars ... ok
[INFO] [stdout] test tui::graph_render::tests::render_done_node_borders_and_color ... ok
[INFO] [stdout] test tui::theme::tests::blocked_style_returns_neon_orange ... ok
[INFO] [stdout] test tui::theme::tests::progress_bar_empty ... ok
[INFO] [stdout] test tui::graph::tests::barycenter_wide_graph_crossing_reduction ... ok
[INFO] [stdout] test tui::theme::tests::progress_bar_full ... ok
[INFO] [stdout] test tui::theme::tests::progress_bar_half ... ok
[INFO] [stdout] test tui::theme::tests::progress_bar_zero_total ... ok
[INFO] [stdout] test tui::theme::tests::project_status_style_returns_correct_fg ... ok
[INFO] [stdout] test tui::theme::tests::status_style_returns_correct_fg ... ok
[INFO] [stdout] test tui::theme::tests::status_symbol_returns_correct_char ... ok
[INFO] [stdout] test tui::ui::tests::dual_summary_shows_dashes_when_task_cache_none ... ok
[INFO] [stdout] test tui::ui::tests::dual_summary_renders_both_pane_stats ... ok
[INFO] [stdout] test tui::ui::tests::epic_list_shows_short_id_before_title ... ok
[INFO] [stdout] test tui::ui::tests::summary_blocked_color_orange_when_nonzero ... ok
[INFO] [stdout] test tui::ui::tests::short_id_span_uses_text_dim_color ... ok
[INFO] [stdout] test tui::ui::tests::summary_blocked_color_dim_when_zero ... ok
[INFO] [stdout] test tui::ui::tests::no_short_id_span_when_none ... ok
[INFO] [stdout] test tui::ui::tests::summary_counts_all_done ... ok
[INFO] [stdout] test tui::ui::tests::summary_counts_blocked_nodes ... ok
[INFO] [stdout] test tui::ui::tests::summary_counts_empty_graph ... ok
[INFO] [stdout] test tui::ui::tests::summary_done_color_green ... ok
[INFO] [stdout] test tui::ui::tests::summary_done_node_not_counted_as_blocked ... ok
[INFO] [stdout] test tui::ui::tests::summary_label_epic ... ok
[INFO] [stdout] test tui::ui::tests::summary_label_task ... ok
[INFO] [stdout] test tui::ui::tests::summary_mixed_statuses ... ok
[INFO] [stdout] test tui::ui::tests::task_detail_header_shows_short_id ... ok
[INFO] [stdout] test tui::ui::tests::summary_not_blocked_when_blocker_is_done ... ok
[INFO] [stdout] test tui::ui::tests::task_list_shows_short_id_before_title ... ok
[INFO] [stdout] test tui::ui::tests::task_detail_header_no_short_id_when_none ... ok
[INFO] [stdout] test tui::app::tests::scroll_resets_when_entering_graph_view ... ok
[INFO] [stdout] test tui::app::tests::scroll_resets_on_view_switch_2 ... ok
[INFO] [stdout] test tui::app::tests::scroll_l_clamped_to_max_scroll ... ok
[INFO] [stdout] test tui::app::tests::scroll_resets_on_view_switch_1 ... ok
[INFO] [stdout] test tui::app::tests::tab_cycles_through_all_panels ... ok
[INFO] [stdout] test tui::app::tests::tab_noop_in_single_graph_mode ... ok
[INFO] [stdout] test tui::app::tests::tab_switches_active_pane_in_dual_mode ... ok
[INFO] [stdout] test tui::app::tests::test_blocked_count_populated ... ok
[INFO] [stdout] test tui::app::tests::test_check_for_db_changes_refreshes_on_change ... ok
[INFO] [stdout] test tui::app::tests::test_status_counts_populated ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 382 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.75s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "e90e6687090f296ac19a4d6b875fc5ab233d132ae566d0a9140d8d08f535953b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e90e6687090f296ac19a4d6b875fc5ab233d132ae566d0a9140d8d08f535953b", kill_on_drop: false }`
[INFO] [stdout] e90e6687090f296ac19a4d6b875fc5ab233d132ae566d0a9140d8d08f535953b
